


                         - Xref Version 3.3 - HISTORY.TXT -


            Changes and updates:

            Version 2.01

            o    Did some tweaking, and reduced the program size about
                 35% and increased execution speed about 15%.

            o    Fixed a small bug in the function tree output. Also,
                 function names are now output in the order they are
                 referenced in the function.

            Version 3.0

            o    Fixed a small bug that sometimes tagged a global
                 variable's type in a function listing as being
                 "unknown" when it really wasn't.

            o    C xref now looks for the "res_word.txt" file in the
                 same directory it is run from. Before it looked in the
                 default directory.

            o    Removed the limit on the number of include files deep
                 that C xref will open. It will now open files until the
                 system runs out of handles, at which time it tells you
                 that it is unable to open the file.

            o    Improved (at least I think so) the output of the local
                 and global variables in the "function" section. Got rid
                 of the module name where a global variable originates
                 (I didn't think that it was really necessary here), and
                 made the line numbers for the local variables line-up
                 like the global variables do.

            o    Improved the "function tree" output section by making
                 it put a blank line between function calls that fall
                 directly below each other in the same column.

            o    C xref can now cross-reference many more modules at one
                 time. C xref creates a temporary file in the directory
                 that C xref is run from, and saves most of the
                 function's information in it, which frees a lot of
                 memory. (I cross-reference over 1/2 meg. of source code
                 without running out of memory.) If you still run out of
                 memory, and you are cross- referencing header files,
                 try it without the headers (header files make a lot of
                 global declarations, which are kept in memory and are
                 not saved to the temporary file. This can use a lot of
                 memory).

            o    Struct variables are now labeled with their tag type,
                 when possible, instead of [struct].





                             HISTORY Information Page 1



                         - Xref Version 3.3 - HISTORY.TXT -


            o    The only C++ compatiblity enabled at this time is that
                 C++ keywords and comments (i.e. "//") are ignored. C++
                 compatiblity will be added in a future update.

            o    The RES_WORD.TXT file has been updated to include all
                 ansi C and C++ key words.

            o    If a function name is over 20 characters long, then it
                 is truncated when it is output in the "CALLS" section
                 of the "FUNCTION" report. When this occures, the
                 truncated name will be followed with three elispses.
                 [i.e. {filename.c}Very_very_long_na...()]

            o    You can now format the output in the verbose function
                 listing with the '-f' command. The command recognizes
                 C's standard formatting commands, '\f' and '\n'. A
                 space must separate the command and the format string,
                 and no spaces should appear in the formatting string.
                 For example:   -f \n\n\n This command would output
                 three newlines after each function's cross- reference.

            Version 3.0a

            o    A list of a function's input parameters is now included
                 in the verbose cross-reference listing. It follows the
                 "CALLS" section.

            o    Functions that have no line of origin are no longer
                 referenced in the verbose listing or the function tree
                 output. (They continue to be referenced in the function
                 summary, however.)

            o    The wild card character "*" can now be used in the
                 RES_WORD.TXT file. Operates the same as with DOS
                 filenames.





















                             HISTORY Information Page 2



                         - Xref Version 3.3 - HISTORY.TXT -


            Version 3.1

            o    If a header file command line included a path name
                 (i.e. #include "c:\text\myheader.h") C xref ignored it.
                 Fixed that. C xref will now use the path if given.

            o    In the same vein, added a new command (-p
                 path;path;...) that lets you input alternate search
                 paths. These paths will be searched when looking for C
                 modules and header files.

            o    Eliminated the "P" (path names) command that follows
                 the "-i" command. No longer needed because of above.

            o    Added the "-o" command. This command allows you to
                 output in the verbose and tree sections those functions
                 that have no line-of-origin.

            o    To save memory (and loading time) when not cross-
                 referencing Windows' programs I split the RES_WORD file
                 into a "C" file (RES_WORD.TXT) and a "Windows" file
                 (WIN_RES.TXT). The WIN_RES file is only loaded when the
                 "-m" command is entered (the RES_WORD file is always
                 loaded). The "-m" command also improves the tree output
                 for Windows' programs. The calling hierarchy is output
                 for the "WinMain" procedure and for any procedure
                 name(s) that are assigned to a WNDCLASS structure (i.e.
                 wndcls.lpfnWndProc = WindowProc).

            o    Changed the program's name to "Xref," because I
                 discovered that another cross-reference program uses
                 the name "C xref."

            Version 3.1a

            o    Corrected a small bug that treated the directive
                 "error" as a type. This directive was from an older
                 version of Borland C++. Deleted it from the
                 RES_WORD.TXT file.

            o    Fixed a bug where Xref failed to handle a function
                 declaration on it's line-of-origin correctly if
                 anything but a line-feed or a comment followed it.













                             HISTORY Information Page 3



                         - Xref Version 3.3 - HISTORY.TXT -


            Version 3.2

            o    Added a DOS Extender. Xref will now address up to 4
                 gigabytes of memory. (Requires a '386 processor or
                 higher.)

            o    I now send a printed manual to registered users.

            o    Xref will now read a text file (using the "-c" command)
                 and execute the commands that it finds there as if they
                 were entered on the command line.

            o    You may not care for the characters that I used to
                 separate the different sections, so I've added two
                 commands to let you choose your own. The "-e" and the
                 "-d" commands let you choose replacements for the equal
                 and dash characters, respectively.

            o    In a variable's line number cross-reference listing, an
                 "*" is placed before those line numbers in which the
                 variable is to the left of an assignment operator (i.e.
                 "=" or "+=", etc.).

            o    Fixed a bug in when dealing with the "define"
                 statement. If a "(", "{" or "[" was redefined, Xref
                 "knew" it was in a define statement, but it also
                 thought it should wait for the appropriate closing
                 character.

            o    The time and date that a module was last modified are
                 now printed in the File Summary Section, following the
                 file name.

            Version 3.2a

            o    Had to compensate for a flaky library call in my C
                 compiler that sometimes causes an error in the tree
                 output section when cross-referencing a large number of
                 modules.

            o    Fixed a bug in the variable output section that listed
                 a line number twice if it appeared more then once on a
                 line, and it was assigned a value on that line (e.g.:
                      Var [int]      *23    23).

            o    Added two status lines that give the total number of
                 global variables, and functions in the modules cross-
                 referenced. They appear at the ends of the Global
                 Variables/Constants, and the Function Summary sections.

            o    Added the "r" command to read the header and module
                 names from a MAKE file. Syntax is: -r MakeFileName.




                             HISTORY Information Page 4



                         - Xref Version 3.3 - HISTORY.TXT -


            Version 3.2b/3.3

            o    Changed the date format on the output for both the
                 header and the file's modified date.

            o    Fixed a bug that caused Xref to handle struct arrays
                 incorrectly. Xref saw "StrArray[ 1 ].iElem" as two
                 variables: "StrArray" and "iElem." It was mislead by
                 the "[]"s.

            o    Some assignments to variables were missed (i.e. no `*'
                 appeared before the line number in the cross-reference
                 listing for a variable) because of whitespace.

            o    Used "feof" which doesn't work very well (at least in
                 Borland C), which caused Xref to sometimes read past
                 the end-of-file (it read the last line twice). Got rid
                 of "feof."

            o    Callback functions are now referenced when they appear
                 in a function call's parameter list (i.e. with a common
                 Windows 3.1 API:
                      MakeProcInstance( CallBack, instance )

                 the reference to "CallBack" will now appear in the
                 "USERS" section.

            o    A reference to a function's prototype will no longer
                 appear in the "USERS" section. A line has been added
                 under the function's name in the "Verbose list of
                 functions" section. It looks like:
                      Prototype : {module name} : line number

                 The "module name" is the module that the functions
                 prototype appears in, and the "line number" is on what
                 line it can be found.

            o    Fixed a possible bug: some internal program settings
                 were not reinitialized after xrefing one module and
                 affect the next module. They are now reset after each
                 module is finished being xrefed.

            o    Fixed a problem Xref had with typedefing functions.
                 Xref would save identifiers (if there are any) that
                 followed the functions type as new types as well (i.e.
                 with (*foobar)( id1, id2 ), "id1" and "id2" were also
                 saved as new types.)

            o    Fixed an internal flag that had to do with being
                 between "( )" on the current line (some things are
                 handled differently if they are between parenthesizes).
                 Sometimes Xref would miss the closing ")" and continue
                 to think that it was between parenthesizes, and then



                             HISTORY Information Page 5



                         - Xref Version 3.3 - HISTORY.TXT -


                 things would not work as they should (header files
                 might be seen as struct types, etc.).






















































                             HISTORY Information Page 6
